Skip to content

fix(ui): scope empty-state placeholder styling per caller and add regression tests - #30553

Merged
aniketkatkar97 merged 4 commits into
mainfrom
fix/ingestion-empty-placeholder-styling
Jul 29, 2026
Merged

fix(ui): scope empty-state placeholder styling per caller and add regression tests#30553
aniketkatkar97 merged 4 commits into
mainfrom
fix/ingestion-empty-placeholder-styling

Conversation

@aniketkatkar97

@aniketkatkar97 aniketkatkar97 commented Jul 28, 2026

Copy link
Copy Markdown
Member

Describe your changes:

Fixes #30552

I worked on scoping the empty-state placeholder styling per caller because the shared getErrorPlaceHolder helper hardcoded the agents-card styling (tw:bg-primary tw:border tw:border-secondary tw:rounded-xl). Since the same helper renders the empty state for both the service Agents tab and the Ingestion pipelines list table, that card styling leaked into the list-table empty state and rendered an unwanted bordered card — a visual regression introduced by #30284.

getErrorPlaceHolder now accepts an optional className that each caller passes: the Agents tab keeps the card styling, while the ingestion list table uses a plain tw:relative tw:py-8 layout.

Regression coverage added:

  • IngestionUtils.test.tsx — unit tests for getErrorPlaceHolder asserting the className is forwarded to the placeholder and that the card classes never leak to a caller that did not pass them.
  • MetadataAgentsView.test.tsx / IngestionListTable.test.tsx — call-site guards pinning the exact className each surface passes.

Proven RED/GREEN: re-hardcoding the old className turns the helper tests red; the fix keeps them green.

Screenshots

Agents tab — empty state keeps the card (intended):

Screenshot 2026-07-28 at 12 59 17 PM

Ingestion Pipelines list table — empty state is plain, no leaked card border (the fix):

Screenshot 2026-07-28 at 12 59 27 PM

Type of change:

  • Bug fix

Checklist:

  • I have read the CONTRIBUTING document.
  • My PR includes tests to cover the changes.

Greptile Summary

This PR scopes shared ingestion empty-state styling by caller.

  • The Agents tab explicitly retains its bordered card presentation.
  • The ingestion pipelines table now requests a plain, padded empty state.
  • Unit and call-site regression tests verify class forwarding and prevent card-style leakage.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/src/utils/IngestionUtils.tsx Replaces the helper’s hardcoded card classes with an optional caller-provided className.
openmetadata-ui/src/main/resources/ui/src/components/ServiceAgents/components/MetadataAgentsView.component.tsx Explicitly preserves the Agents tab’s bordered empty-state card styling.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionListTable/IngestionListTable.tsx Applies a plain relative and padded layout to the ingestion table empty state.
openmetadata-ui/src/main/resources/ui/src/utils/IngestionUtils.test.tsx Adds direct coverage for helper rendering, class forwarding, and absence of implicit card styling.
openmetadata-ui/src/main/resources/ui/src/components/ServiceAgents/components/MetadataAgentsView.test.tsx Verifies that the Agents surface requests the intended card classes.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionListTable/IngestionListTable.test.tsx Verifies that the ingestion table requests its intended plain empty-state classes.

Reviews (4): Last reviewed commit: "Merge branch 'main' into fix/ingestion-e..." | Re-trigger Greptile

getErrorPlaceHolder hardcoded the agents-card styling
(tw:bg-primary tw:border tw:border-secondary tw:rounded-xl), which leaked
into the ingestion pipelines list-table empty state and rendered an unwanted
bordered card (regression from #30284). The helper now takes an optional
className each caller passes: the Agents tab keeps the card, the ingestion
table uses a plain tw:relative tw:py-8 layout.

Adds regression coverage: getErrorPlaceHolder unit tests asserting the
className is forwarded and the card classes never leak to a caller that did
not ask for them, plus call-site guards in MetadataAgentsView and
IngestionListTable pinning the className each passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aniketkatkar97
aniketkatkar97 requested a review from a team as a code owner July 28, 2026 08:02
Copilot AI review requested due to automatic review settings July 28, 2026 08:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added safe to test Add this label to run secure Github workflows on PRs UI UI specific issues labels Jul 28, 2026
@aniketkatkar97 aniketkatkar97 self-assigned this Jul 28, 2026
@open-metadata open-metadata deleted a comment from github-actions Bot Jul 28, 2026
Copilot AI review requested due to automatic review settings July 28, 2026 08:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 65%
65.79% (76987/117008) 49.64% (46261/93179) 50.89% (13932/27375)

@aniketkatkar97 aniketkatkar97 added the To release Will cherry-pick this PR into the release branch label Jul 28, 2026
@aniketkatkar97
aniketkatkar97 enabled auto-merge July 28, 2026 09:20
@open-metadata open-metadata deleted a comment from github-actions Bot Jul 28, 2026
@aniketkatkar97
aniketkatkar97 disabled auto-merge July 28, 2026 10:26
@aniketkatkar97
aniketkatkar97 added this pull request to the merge queue Jul 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 28, 2026
@aniketkatkar97
aniketkatkar97 added this pull request to the merge queue Jul 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 28, 2026
@aniketkatkar97
aniketkatkar97 added this pull request to the merge queue Jul 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 29, 2026
Copilot AI review requested due to automatic review settings July 29, 2026 04:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@sonarqubecloud

Copy link
Copy Markdown

@aniketkatkar97
aniketkatkar97 added this pull request to the merge queue Jul 29, 2026
Merged via the queue into main with commit e16f929 Jul 29, 2026
79 checks passed
@aniketkatkar97
aniketkatkar97 deleted the fix/ingestion-empty-placeholder-styling branch July 29, 2026 06:18
@github-actions

Copy link
Copy Markdown
Contributor

Changes have been cherry-picked to the 2.0 branch.

github-actions Bot pushed a commit that referenced this pull request Jul 29, 2026
…ression tests (#30553)

* fix(ui): scope empty-state placeholder styling per caller

getErrorPlaceHolder hardcoded the agents-card styling
(tw:bg-primary tw:border tw:border-secondary tw:rounded-xl), which leaked
into the ingestion pipelines list-table empty state and rendered an unwanted
bordered card (regression from #30284). The helper now takes an optional
className each caller passes: the Agents tab keeps the card, the ingestion
table uses a plain tw:relative tw:py-8 layout.

Adds regression coverage: getErrorPlaceHolder unit tests asserting the
className is forwarded and the card classes never leak to a caller that did
not ask for them, plus call-site guards in MetadataAgentsView and
IngestionListTable pinning the className each passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Fix checkstyle

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit e16f929)
@github-actions

Copy link
Copy Markdown
Contributor

Failed to cherry-pick changes to the 1.13 branch.
Please cherry-pick the changes manually.
You can find more details here.

@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Scopes empty-state placeholder styling per caller by accepting an optional className in getErrorPlaceHolder to prevent card styling leakage on the ingestion list table. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar | Powered by Gitar — free for open source

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs To release Will cherry-pick this PR into the release branch UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Empty-state placeholder card styling leaks into the Ingestion pipelines list table

4 participants